Memory devices and microprocessors are key elements in computer technology. Specifically, when power is initially supplied to a computer system, a microprocessor is one component that receives power and, in response, looks to a specified memory address in a non-volatile memory device for preliminary instructions to execute and thereby become functionally operational. This process is commonly known as a "boot up" process. Namely, the microprocessor "boots up" from a non functional mode to an operational mode upon power initialization by reading and executing basic, essential instructions (firmware) stored in a non-volatile memory device.
An electrically erasable programmable read only memory (EEPROM) device is a non-volatile memory commonly used for storing firmware (code) to boot up a microprocessor. A flash EEPROM allows for its entire memory to be erased in a single step. In recent years, flash EEPROMs having selectively erasable/writable block capabilities have become widely available allowing for address specific blocks in the EEPROM to be selectively erased and/or written.
The flash EEPROM has been especially useful in computer systems because firmware can be erased and upgraded upon demand without the need for physically replacing an entire memory chip, such as a read only memory (ROM). Being able to upgrade firmware by downloading the code to the EEPROM not only simplifies and reduces the cost of firmware upgrades (i.e., no need to replace the entire chip), but it also increases the reliability of the product which embodies the EEPROM because no sockets are needed for chip replacement.
However, during a firmware upgrade process, the product is vulnerable to disruptions during the period when the flash EEPROM is erased. Namely, if the boot firmware is erased in preparation for the writing of new firmware (the upgrade), and a power failure or other disruption occurs at that instant in time, then the upgrade process can not be completed and the product is left essentially useless, i.e., without the original firmware and without the upgraded firmware. Once the boot firmware is erased, the system (microprocessor) no longer has access to instructions for boot up execution, let alone to execute any other action such as downloading new firmware.
Current products on the market deal with the problem of potential powerfail during a firmware upgrade in one of several ways. For example, an additional boot ROM may be used to hold a minimum set of code needed to get the product ready for a flash EEPROM upgrade. However, this adds expense and software complexities to the product. Additionally, the boot ROM often has to be physically upgraded along with the firmware upgrade of the EEPROM due to requirements placed on it by most microprocessor architectures.
An alternate method for dealing with disruptions during an EEPROM upgrade is simply to warn the user that if such occurs, the product will need to be returned to the factory for repair.
It is obvious that these solutions leave much to be desired. Accordingly, objects of the present invention are to provide a system and method for providing powerfail durable flash EEPROM upgrades without the need for an extra boot ROM.